package com.menggudf.dao.base;


import java.util.Collection;
import java.util.List;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;

public abstract interface BaseDao<T>
{
  public abstract EntityManager getEntityManager();
  
  public abstract CriteriaBuilder getCriteriaBuilder();
  
  public abstract T insert(T paramT);
  
  public abstract List<T> insertList(List<T> paramList);
  
  public abstract T update(T paramT);
  
  public abstract List<T> updateList(List<T> paramList);
  
  public abstract void delete(BaseEntity paramBaseEntity);
  
  public abstract void delete(Collection<? extends BaseEntity> paramCollection);
  
  public abstract T findById(Class<T> paramClass, Integer paramInteger);
  
  public abstract List<T> findByIds(Class<T> paramClass, List<Integer> paramList);
  
  public abstract T findBy(Class<T> paramClass, String paramString1, String paramString2);
  
  public abstract List<T> findListBy(Class<T> paramClass, String paramString1, String paramString2);
  
  public abstract T findBy(Class<T> paramClass, Map<String, Object> paramMap);
  
  public abstract List<T> findListBy(Class<T> paramClass, Map<String, Object> paramMap);
  
  public abstract List<T> findAll(Class<T> paramClass);
  
  public abstract List<T> findByCriteriaQuery(CriteriaQuery<T> paramCriteriaQuery);
  
  public abstract List<T> findByBaseQuery(BaseQuery<T> paramBaseQuery);
  
  public abstract Page<T> listPage(Class<T> paramClass, int paramInt1, int paramInt2);
  
  public abstract Page<T> listPage(Class<T> paramClass, BaseQuery<T> paramBaseQuery, int paramInt1, int paramInt2);
  
  public abstract List<Integer> getIds(List<T> paramList);
  
  public abstract boolean contains(Class<T> paramClass, String paramString1, String paramString2);
  
  public abstract List<T> list(BaseQuery<T> paramBaseQuery);
  
  public abstract T findBy(Class<T> paramClass, String paramString, Object paramObject);
  
  public abstract List<T> findListBy(Class<T> paramClass, String paramString, Object paramObject);
}
